package com.yxinsur.imc.business.domain;

import java.math.BigDecimal;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.yxinsur.imc.common.core.domain.BaseImcEntity;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import com.yxinsur.imc.common.annotation.Excel;
import com.yxinsur.imc.common.core.domain.BaseEntity;

/**
 * 保单缴费记录对象 imc_order_charge
 * 
 * @author imc
 * @date 2021-03-18
 */
public class ImcOrderCharge extends BaseImcEntity
{
    private static final long serialVersionUID = 1L;

    /** $column.columnComment */
    private String id;

    /** 保单表主键 */
    @Excel(name = "保单表主键")
    private Long orderId;

    /** 险种代码 */
    @Excel(name = "险种代码")
    private String insCode;

    /** 险种名称 */
    @Excel(name = "险种名称")
    private String riskName;

    /** 保费实缴金额 */
    @Excel(name = "保费实缴金额")
    private BigDecimal prem;

    /** 保费对应标保 */
    @Excel(name = "保费对应标保")
    private BigDecimal standPrem;

    /** 代理人佣金率 */
    @Excel(name = "代理人佣金率")
    private BigDecimal commissionRate;

    /** 直接佣金（保代向代理人支出） */
    @Excel(name = "直接佣金", readConverterExp = "保=代向代理人支出")
    private BigDecimal commission;

    /** 是否发放佣金 */
    @Excel(name = "是否发放佣金")
    private String isCommPaid;

    /** 发放佣金日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "发放佣金日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date payDate;

    /** 供应商基础手续费率 */
    @Excel(name = "供应商基础手续费率")
    private BigDecimal feeRate;

    /** 基础手续费（保代从供应商收入） */
    @Excel(name = "基础手续费", readConverterExp = "保=代从供应商收入")
    private BigDecimal fee;

    /** 是否已结算手续费Y N */
    @Excel(name = "是否已结算手续费Y N")
    private String isFeeSettled;

    /** 结算所在月 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算所在月", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settleMonth;

    /** 结算确认提交日期(可能并非结算月) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "结算确认提交日期(可能并非结算月)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date settleDate;

    /** 保单所在年度 */
    @Excel(name = "保单所在年度")
    private Long policyYear;

    /** 保单缴费次数，首次为1 */
    @Excel(name = "保单缴费次数，首次为1")
    private Long payNum;

    /** 保障年期类型 */
    @Excel(name = "保障年期类型")
    private String coveragePeriodEnum;

    /** 保障期限 */
    @Excel(name = "保障期限")
    private String coveragePeriodValue;

    /** 保障期限单位 */
    @Excel(name = "保障期限单位")
    private String coveragePeriodUnit;

    /** 缴费年期类型 */
    @Excel(name = "缴费年期类型")
    private String chargePeriodEnum;

    /** 缴费期限 */
    @Excel(name = "缴费期限")
    private String chargePeriodValue;

    /** 缴费期限单位Y年M月D日 A岁（年龄） */
    @Excel(name = "缴费期限单位Y年M月D日 A岁", readConverterExp = "年=龄")
    private String chargePeriodUnit;

    /** 缴费频率类型 */
    @Excel(name = "缴费频率类型")
    private String chargeIntervalEnum;

    /** 是否自动续保Y N */
    @Excel(name = "是否自动续保Y N")
    private String autoRenewalEnum;

    /** Y豁免保费 */
    @Excel(name = "Y豁免保费")
    private String waiverPrem;

    /** 险种状态 */
    @Excel(name = "险种状态")
    private String riskStatusCode;

    /** 险种流转状态 */
    @Excel(name = "险种流转状态")
    private String riskFlowStatusCode;

    /** 投保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "投保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date applyDate;

    /** 承保日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "承保日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date insureDate;

    /** 保单生效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单生效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date effectiveDate;

    /** 保单失效日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "保单失效日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date expiredDate;

    /** 客户回执签收时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "客户回执签收时间", width = 30, dateFormat = "yyyy-MM-dd")
    private Date custAckDate;

    /** 回执录入时间(回执录入系统时间) */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "回执录入时间(回执录入系统时间)", width = 30, dateFormat = "yyyy-MM-dd")
    private Date ackDate;

    /** 险种终止日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "险种终止日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date endDate;

    /** 险种终止备注 */
    @Excel(name = "险种终止备注")
    private String endCauseNote;
    /** $column.columnComment */
    @Excel(name = "是否删除")
    private String isDeleted;
    /** 备注 */
    @Excel(name = "备注")
    private String remark;
    /** 租户id,一个租户id唯一对一个机构id（默认机构id为根节点id暨法人机构） */
    @Excel(name = "租户id,一个租户id唯一对一个机构id", readConverterExp = "默=认机构id为根节点id暨法人机构")
    private Long tenantId;

    public void setId(String id) 
    {
        this.id = id;
    }

    public String getId() 
    {
        return id;
    }
    public void setOrderId(Long orderId) 
    {
        this.orderId = orderId;
    }

    public Long getOrderId() 
    {
        return orderId;
    }
    public void setInsCode(String insCode) 
    {
        this.insCode = insCode;
    }

    public String getInsCode() 
    {
        return insCode;
    }
    public void setRiskName(String riskName) 
    {
        this.riskName = riskName;
    }

    public String getRiskName() 
    {
        return riskName;
    }
    public void setPrem(BigDecimal prem) 
    {
        this.prem = prem;
    }

    public BigDecimal getPrem() 
    {
        return prem;
    }
    public void setStandPrem(BigDecimal standPrem) 
    {
        this.standPrem = standPrem;
    }

    public BigDecimal getStandPrem() 
    {
        return standPrem;
    }
    public void setCommissionRate(BigDecimal commissionRate) 
    {
        this.commissionRate = commissionRate;
    }

    public BigDecimal getCommissionRate() 
    {
        return commissionRate;
    }
    public void setCommission(BigDecimal commission) 
    {
        this.commission = commission;
    }

    public BigDecimal getCommission() 
    {
        return commission;
    }
    public void setIsCommPaid(String isCommPaid) 
    {
        this.isCommPaid = isCommPaid;
    }

    public String getIsCommPaid() 
    {
        return isCommPaid;
    }
    public void setPayDate(Date payDate) 
    {
        this.payDate = payDate;
    }

    public Date getPayDate() 
    {
        return payDate;
    }
    public void setFeeRate(BigDecimal feeRate) 
    {
        this.feeRate = feeRate;
    }

    public BigDecimal getFeeRate() 
    {
        return feeRate;
    }
    public void setFee(BigDecimal fee) 
    {
        this.fee = fee;
    }

    public BigDecimal getFee() 
    {
        return fee;
    }
    public void setIsFeeSettled(String isFeeSettled) 
    {
        this.isFeeSettled = isFeeSettled;
    }

    public String getIsFeeSettled() 
    {
        return isFeeSettled;
    }
    public void setSettleMonth(Date settleMonth) 
    {
        this.settleMonth = settleMonth;
    }

    public Date getSettleMonth() 
    {
        return settleMonth;
    }
    public void setSettleDate(Date settleDate) 
    {
        this.settleDate = settleDate;
    }

    public Date getSettleDate() 
    {
        return settleDate;
    }
    public void setPolicyYear(Long policyYear) 
    {
        this.policyYear = policyYear;
    }

    public Long getPolicyYear() 
    {
        return policyYear;
    }
    public void setPayNum(Long payNum) 
    {
        this.payNum = payNum;
    }

    public Long getPayNum() 
    {
        return payNum;
    }
    public void setCoveragePeriodEnum(String coveragePeriodEnum) 
    {
        this.coveragePeriodEnum = coveragePeriodEnum;
    }

    public String getCoveragePeriodEnum() 
    {
        return coveragePeriodEnum;
    }
    public void setCoveragePeriodValue(String coveragePeriodValue) 
    {
        this.coveragePeriodValue = coveragePeriodValue;
    }

    public String getCoveragePeriodValue() 
    {
        return coveragePeriodValue;
    }
    public void setCoveragePeriodUnit(String coveragePeriodUnit) 
    {
        this.coveragePeriodUnit = coveragePeriodUnit;
    }

    public String getCoveragePeriodUnit() 
    {
        return coveragePeriodUnit;
    }
    public void setChargePeriodEnum(String chargePeriodEnum) 
    {
        this.chargePeriodEnum = chargePeriodEnum;
    }

    public String getChargePeriodEnum() 
    {
        return chargePeriodEnum;
    }
    public void setChargePeriodValue(String chargePeriodValue) 
    {
        this.chargePeriodValue = chargePeriodValue;
    }

    public String getChargePeriodValue() 
    {
        return chargePeriodValue;
    }
    public void setChargePeriodUnit(String chargePeriodUnit) 
    {
        this.chargePeriodUnit = chargePeriodUnit;
    }

    public String getChargePeriodUnit() 
    {
        return chargePeriodUnit;
    }
    public void setChargeIntervalEnum(String chargeIntervalEnum) 
    {
        this.chargeIntervalEnum = chargeIntervalEnum;
    }

    public String getChargeIntervalEnum() 
    {
        return chargeIntervalEnum;
    }
    public void setAutoRenewalEnum(String autoRenewalEnum) 
    {
        this.autoRenewalEnum = autoRenewalEnum;
    }

    public String getAutoRenewalEnum() 
    {
        return autoRenewalEnum;
    }
    public void setWaiverPrem(String waiverPrem) 
    {
        this.waiverPrem = waiverPrem;
    }

    public String getWaiverPrem() 
    {
        return waiverPrem;
    }
    public void setRiskStatusCode(String riskStatusCode) 
    {
        this.riskStatusCode = riskStatusCode;
    }

    public String getRiskStatusCode() 
    {
        return riskStatusCode;
    }
    public void setRiskFlowStatusCode(String riskFlowStatusCode) 
    {
        this.riskFlowStatusCode = riskFlowStatusCode;
    }

    public String getRiskFlowStatusCode() 
    {
        return riskFlowStatusCode;
    }
    public void setApplyDate(Date applyDate) 
    {
        this.applyDate = applyDate;
    }

    public Date getApplyDate() 
    {
        return applyDate;
    }
    public void setInsureDate(Date insureDate) 
    {
        this.insureDate = insureDate;
    }

    public Date getInsureDate() 
    {
        return insureDate;
    }
    public void setEffectiveDate(Date effectiveDate) 
    {
        this.effectiveDate = effectiveDate;
    }

    public Date getEffectiveDate() 
    {
        return effectiveDate;
    }
    public void setExpiredDate(Date expiredDate) 
    {
        this.expiredDate = expiredDate;
    }

    public Date getExpiredDate() 
    {
        return expiredDate;
    }
    public void setCustAckDate(Date custAckDate) 
    {
        this.custAckDate = custAckDate;
    }

    public Date getCustAckDate() 
    {
        return custAckDate;
    }
    public void setAckDate(Date ackDate) 
    {
        this.ackDate = ackDate;
    }

    public Date getAckDate() 
    {
        return ackDate;
    }
    public void setEndDate(Date endDate) 
    {
        this.endDate = endDate;
    }

    public Date getEndDate() 
    {
        return endDate;
    }
    public void setEndCauseNote(String endCauseNote) 
    {
        this.endCauseNote = endCauseNote;
    }

    public String getEndCauseNote() 
    {
        return endCauseNote;
    }
    public void setIsDeleted(String isDeleted)
    {
        this.isDeleted = isDeleted;
    }

    public String getIsDeleted() 
    {
        return isDeleted;
    }
    public void setTenantId(Long tenantId)
    {
        this.tenantId = tenantId;
    }

    public Long getTenantId()
    {
        return tenantId;
    }

    public String getRemark() {
        return remark;
    }

    public void setRemark(String remark) {
        this.remark = remark;
    }

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("orderId", getOrderId())
            .append("insCode", getInsCode())
            .append("riskName", getRiskName())
            .append("prem", getPrem())
            .append("standPrem", getStandPrem())
            .append("commissionRate", getCommissionRate())
            .append("commission", getCommission())
            .append("isCommPaid", getIsCommPaid())
            .append("payDate", getPayDate())
            .append("feeRate", getFeeRate())
            .append("fee", getFee())
            .append("isFeeSettled", getIsFeeSettled())
            .append("settleMonth", getSettleMonth())
            .append("settleDate", getSettleDate())
            .append("policyYear", getPolicyYear())
            .append("payNum", getPayNum())
            .append("coveragePeriodEnum", getCoveragePeriodEnum())
            .append("coveragePeriodValue", getCoveragePeriodValue())
            .append("coveragePeriodUnit", getCoveragePeriodUnit())
            .append("chargePeriodEnum", getChargePeriodEnum())
            .append("chargePeriodValue", getChargePeriodValue())
            .append("chargePeriodUnit", getChargePeriodUnit())
            .append("chargeIntervalEnum", getChargeIntervalEnum())
            .append("autoRenewalEnum", getAutoRenewalEnum())
            .append("waiverPrem", getWaiverPrem())
            .append("riskStatusCode", getRiskStatusCode())
            .append("riskFlowStatusCode", getRiskFlowStatusCode())
            .append("applyDate", getApplyDate())
            .append("insureDate", getInsureDate())
            .append("effectiveDate", getEffectiveDate())
            .append("expiredDate", getExpiredDate())
            .append("custAckDate", getCustAckDate())
            .append("ackDate", getAckDate())
            .append("endDate", getEndDate())
            .append("endCauseNote", getEndCauseNote())
            .append("createId", getCreateId())
            .append("createTime", getCreateTime())
            .append("updateId", getUpdateId())
            .append("updateTime", getUpdateTime())
            .append("isDeleted", getIsDeleted())
            .append("tenantId", getTenantId())
            .toString();
    }
}
